const Static = {
    eventBusOn: {
        loginFailure: {
            eventid: "loginFailure",//登录失效事件
            // 登录失效处理函数
            handle: function () {
                console.log('登录失效，重定向到登录页面...');
                // 可以在这里执行一些清理操作，如清除localStorage中的token
                // 然后重定向到登录页面
                window.location.href = './login.html';
            }
        },
        refreshToken: {
            eventid: "refreshToken",//登录失效事件
            // 登录失效处理函数
            handle: function () {
                console.log('短token过期，刷新token');

                //todo
                PubF.refreshToken();
            }
        }

    }
}

const PubF = {
    //登录状态检查函数 正常返回0
    checkLoginStatus: function () {
        // 这里应该有实际的逻辑来检查用户的登录状态
        // 例如，检查localStorage中的token是否有效
        // 如果登录状态无效，返回false
        let tokenstr = localStorage.getItem('token');

        //判断是否在 没有按登录失败处理
        if (_.isEmpty(tokenstr)) {
            return Static.eventBusOn.loginFailure.eventid;
        }

        //判断是否存在有效期内
        let tokenS; //短token
        let tokenL; //长token
        //alert(tokenstr)
        let tokenArr = JSON.parse(tokenstr);
        //alert(tokens[0].jwtToken);
        tokenS = tokenArr[0];
        tokenL = tokenArr[1];


        //没有过期时间 按登录失效处理
        if (_.isEmpty(tokenS.expirationTime)) {
            return Static.eventBusOn.loginFailure.eventid;
        }
        let now = dayjs(new Date());
        //长token过期   按登录失败处理
        if (now.isAfter(dayjs(tokenL.expirationTime))) {
            return Static.eventBusOn.loginFailure.eventid;
        }

        //短token过期  并且长token没过期  触发刷新token  提前10秒触发刷新
        now= now.add(10, 'second')
        if (now.isAfter(dayjs(tokenS.expirationTime))) {
            return Static.eventBusOn.refreshToken.eventid;
        }

        return "";
    },

    refreshToken: function () {
        //alert('refreshToken');
        axios.post(api.refreshToken.url, {}, {
            headers: api.refreshToken.headers
        }).then(function (response) {
            //console.log(JSON.stringify(response.data));
            localStorage.setItem('token', JSON.stringify(response.data.data));
        }).catch(function (error) {
            console.error('Error:', error);
         });
    },
    getTokenLFromlocalStorage: function () {
        let tokenL; //长token
        //alert(tokenstr)
        let tokenArr = this.getTokenFromlocalStorage();
        //alert(tokens[0].jwtToken);
        tokenL = tokenArr[1];
        return tokenL;
    },

    getTokenSFromlocalStorage: function () {
        let tokenS; //短token
        let tokenArr = this.getTokenFromlocalStorage();
        //alert(tokens[0].jwtToken);
        tokenS = tokenArr[0];
        return tokenS;
    },

    getTokenFromlocalStorage: function () {
        let tokenstr = localStorage.getItem('token');
        //alert(tokenstr)
        let tokenArr = JSON.parse(tokenstr);
        //alert(tokens[0].jwtToken);
        return tokenArr;
    },



}
